package cn.itcast.hotel;

import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

/**
 * -----------------------------------------------------------------------------------------
 * 0.ElasticSearch和RabbitMQ的学习DEMO(消费者端)
 * https://gitee.com/wjw888/es_mq_consumer.git
 * -----------------------------------------------------------------------------------------
 * 1.项目启动前,需启动:
 * RabbitMQ服务、elasticSearch、kibana
 * http://localhost:15672/    rabbitMQ访问地址:admin/admin(账/密)
 * http://localhost:9200/     elasticSearch版本信息查看
 * http://localhost:5601/     kibana在Dev Tools窗口可以发送DSL语句操作ES
 * -----------------------------------------------------------------------------------------
 * 2.数据库新增表：tb_hotel,sql文件在resources/sql下
 * 3.运行test.java.cn.itcast.hotel下的HotelIndexTest下的createHotelIndex(),
 *   建立索引库 ==> 相当于建立数据库表
 * 4.运行test.java.cn.itcast.hotel下的HotelDocumentTest下的addDocumentBulkRequest(),
 *   建立文档 ==> 相当于在数据库表中,新增多条数据。
 * 5.运行test.java.cn.itcast.hotel下的HotelQueryTest,可以进行查询的相关操作
 * -----------------------------------------------------------------------------------------
 * 6.项目启动后,访问地址为:http://localhost:8082/
 * 7.本微服务启动后作为RabbitMQ的'消费者',
 * 绑定指定的交换机、队列、收到消息后,对相关(index)索引库中的(document)文档,进行增删改操作
 * -----------------------------------------------------------------------------------------
 */
@MapperScan("cn.itcast.hotel.mapper")
@SpringBootApplication
public class HotelDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(HotelDemoApplication.class, args);
    }

    /**
     * 注入bean,在其他类要调用该类的时候,可以直接使用@Autowired
     * @return
     */
    @Bean
    public RestHighLevelClient client(){
        return new RestHighLevelClient(RestClient.builder(
            HttpHost.create("http://127.0.0.1:9200")
        ));
    }
}
